最後就會形成下面這張圖,左邊工程師負責寫類別並compile,右邊負責寫主程式並compiler,中間用介面當橋樑,最後藉由連結器拉再一起(linker)成可執行檔交給User使用,三方都不知道對方的如何寫的只看得到標頭檔.h。不可否認這種設計有點古老了,其實根本沒人有興趣看你我的程式碼,這世界很少靠黑科技賺錢的公司大部分是靠商業模型賺錢(請君看看那可憐的世界前三大數據公司MapR只賣了5000萬美金而另外兩家直接被打到合併,股價一度從21跌到5元同期NASDAQ都從6000漲到16000,最終乘著2021景氣好趕緊把公司賣掉),所以最新的C++20與之後的標準可以不用標頭檔.h直接import package
接續Day4介面與類別實作細節都有了還缺一個主程式,為了隱藏實作細節主程式只引入GradeBook.h標頭檔
// Fig. 3.17: fig03_16.cpp
#include <iostream>
#include "GradeBook.h" // include definition of class GradeBook
using namespace std;
int main()
{
// create two GradeBook objects;
// initial course name of gradeBook1 is too long
GradeBook gradeBook1( "CS101 Introduction to Programming in C++" );
GradeBook gradeBook2( "CS102 C++ Data Structures" );
// display each GradeBook's courseName
cout << "gradeBook1's initial course name is: "
<< gradeBook1.getCourseName()
<< "\ngradeBook2's initial course name is: "
<< gradeBook2.getCourseName() << endl;
// modify myGradeBook's courseName (with a valid-length string)
gradeBook1.setCourseName( "CS101 C++ Programming" );
// display each GradeBook's courseName
cout << "\ngradeBook1's course name is: "
<< gradeBook1.getCourseName()
<< "\ngradeBook2's course name is: "
<< gradeBook2.getCourseName() << endl;
}